package Control;

import Clases.Empleado;
import Clases.HoraExtra;
import Clases.Tardia;
import Gestor.GestorEmpleado;
import java.util.ArrayList;
import java.util.Date;

public class ControlEmpleado {

    private static ControlEmpleado instancia = null;
    private final GestorEmpleado gestorEmpleado = GestorEmpleado.obtenerInstancia();

    public static ControlEmpleado obtenerInstancia() {
        if (instancia == null) {
            instancia = new ControlEmpleado();
        }
        return instancia;
    }

    private ControlEmpleado() {
    }

    public Object insertarEmpleado(Object empleado) {
        return gestorEmpleado.insertar(empleado);
    }

    public boolean insertarOActualizarEmpleado(Object empleado) {
        return gestorEmpleado.InsertarOActualizar(empleado);
    }

    public boolean modificarEmpleado(Empleado empleado) {
        return gestorEmpleado.actualizar(empleado);
    }

    public ArrayList<Empleado> obtenerListaEmpleados() {
        ArrayList< Empleado> empleados = gestorEmpleado.obtenerListaEmpleadosActuales();
        return empleados;
    }
    public ArrayList<Empleado> obtenerEmpleadosBancarios(){
        ArrayList<Empleado> empleados=gestorEmpleado.obtenerListaEmpleadosBancarios();
        return empleados;
    }

    public ArrayList<Empleado> obtenerListaEmpleadosHistoricos() {
        ArrayList< Empleado> empleados = gestorEmpleado.obtenerListaEmpleadosHistoricos();
        return empleados;
    }

    public Empleado getEmpleadoCodigo(long codigo) {
        return gestorEmpleado.getEmpleadoCodigo(codigo);
    }

    public Empleado getEmpleadoCedula(long cedula) {
        return gestorEmpleado.getEmpleadoCedula(cedula);
    }

    public Empleado getEmpleadoCedulaHistorico(long cedula) {
        return gestorEmpleado.getEmpleadoCedulaHistorico(cedula);
    }

    public boolean eliminarEmpleado(Empleado empleado) {
        return gestorEmpleado.eliminar(empleado);
    }

    public Empleado getEmpleadoNum(long numEmpleado) {
        return gestorEmpleado.getEmpleadoNum(numEmpleado);
    }

    public void agregarTardias(Tardia tardia) {
        gestorEmpleado.insertar(tardia);
    }

    public void agregarHorasExtra(HoraExtra extras) {
        gestorEmpleado.insertar(extras);
    }

    public int getCantHorasExtraDiario(Long numEmpleado, Date fecha) {
        return gestorEmpleado.getHorasExtraEmpleado(numEmpleado, fecha);
    }
    
    public boolean hayPagos(){
        ControlPago controlPago = ControlPago.obtenerInstancia();
        ArrayList<Date> pago = controlPago.getPago();
        java.sql.Date sqlDate1 = new java.sql.Date((pago.get(0)).getTime());
        return gestorEmpleado.hayPagos(sqlDate1);
    }
    
    public void crearPagos(){
        gestorEmpleado.crearPagos();
    }
}
